package proxy;

import org.springframework.cglib.beans.BeanGenerator;
import org.springframework.util.ReflectionUtils;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

/**
 * @Author: admin
 * @Description:
 * @Date: 2019/5/28 11:43
 */

public class ProxyMain {
    public static void main(String[] args) {
        User user =new User();
        JdkProxy jdkProxy=new JdkProxy();
        IUser jdkUser=(IUser)jdkProxy.bind(new User());
        jdkUser.say("1");
        CglibProxy cglibProxy=new CglibProxy();
        User cglibUser=cglibProxy.bind(user);
        cglibUser.say("2");

//        try {
//            Class t=Class.forName("proxy.User");
//
//            Constructor constructor= t.getConstructor(null);
//            User uc= (User) constructor.newInstance();
//            uc.say("12312");
//            User user1=(User) t.newInstance();
//            user1.say("AAA");
//
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        } catch (IllegalAccessException e) {
//            e.printStackTrace();
//        } catch (InstantiationException e) {
//            e.printStackTrace();
//        } catch (NoSuchMethodException e) {
//            e.printStackTrace();
//        } catch (InvocationTargetException e) {
//            e.printStackTrace();
//        }


//        BeanGenerator beanGenerator=new BeanGenerator();
//        beanGenerator.addProperty("userName",String.class);
//        beanGenerator.addProperty("password",String.class);
//        Object o=beanGenerator.create();
//        Field[] fields=o.getClass().getDeclaredFields();
//        for (Field field:fields){
//            System.out.println(field);
//            System.out.println(field.getName());
//            System.out.println(field.getType());
//        }

        //PropertyDescriptor[] pds= ReflectionUtils.

    }
}
